Auto-aim
Compatible RotMG client version:' 123.5.1'' *Disassemble game bytecode with RABCDAsm *Open the folder where the disassembled code is, such as '''c:\rabcdsam\client\. *Open the c'om' folder *Open the company folder *Open the assembleegameclient folder *Open the objects folder *Find the player.class.asasm file and open it in a text editor (such as Notepad++ ). *Find the function _-O7 in the document. *Replace _-O7 with the following code : trait method QName(PackageNamespace(""), "_-O7") method refid "com.company.assembleegameclient.objects:Player/_-O7" param QName(PackageNamespace(""), "Number") returns QName(PackageNamespace(""), "void") body maxstack 16 localcount 16 initscopedepth 16 maxscopedepth 18 code ;aimingAngle = arg1 + Parameters.data_.cameraAngle; getlocal0 pushscope getlocal1 getlex QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters") getproperty QName(PackageNamespace(""), "data_") getproperty Multiname("cameraAngle", "com.company.assembleegameclient.objects:Player#0"), PackageNamespace(""), PrivateNamespace("*", "com.company.assembleegameclient.objects:Player#1"), PackageNamespace("com.company.assembleegameclient.objects"), PackageInternalNs("com.company.assembleegameclient.objects"), Namespace("http://adobe.com/AS3/2006/builtin"), ProtectedNamespace("_-iX"), StaticProtectedNs("_-iX"), StaticProtectedNs("_-TE"), StaticProtectedNs("_-iP"), StaticProtectedNs("_-0-I")) add setlocal 7 ;if (Left_Clicking) don't alter aimingAngle getlex QName(PackageNamespace(""), "map_") getproperty QName(PackageNamespace(""), "gs_") getproperty QName(PackageNamespace(""), "mui_") getproperty QName(PrivateNamespace("*", "com.company.assembleegameclient.game:_-07a#0"), "_-08R") iftrue L138 ;Get game object pushnull coerce QName(PackageNamespace("com.company.assembleegameclient.objects"), "GameObject") ;coerce null that was pushed onto stack into a GameObject obj ??? setlocal 4 ;save object to local register 4 ;initialize current target distance to -1 pushbyte 255 setlocal 8 ;initialize considered target distance to 0 pushbyte 0 setlocal 9 ;set local register 11 to any type (used for speed and lifetime of player's projectile) pushnull coerce_a setlocal 11 ;current target max health pushbyte 0 setlocal 12 ;considered target max health pushbyte 0 setlocal 13 ;used for hasnext2 instruction pushbyte 0 setlocal 5 ;get the list of every object in game? jump to start going through list getlex QName(PackageNamespace(""), "map_") getproperty QName(PackageNamespace(""), "goDict_") coerce_a setlocal 6 jump L131 L40: label getlocal 6 getlocal 5 nextvalue coerce QName(PackageNamespace("com.company.assembleegameclient.objects"), "GameObject") dup setlocal 4 ;make sure object is a character and not something like a wall ;getlocal 4 getlex QName(PackageNamespace("com.company.assembleegameclient.objects"), "Character") istypelate iffalse L131 ;make sure object is an enemy getlocal 4 getproperty QName(PackageNamespace(""), "props_") getproperty QName(PackageNamespace(""), "isEnemy_") iffalse L131 getlocal 4 callproperty QName(PackageNamespace(""), "_-0C4"), 0 ;<--don't aim at INVINCIBLE (procedure of Gameobject who check for the invincible state. This procedure use the _-0K- property which is referenced as Invincible in %ConditionEffect list iftrue L131 getlocal 4 callproperty QName(PackageNamespace(""), "_-CH"), 0 ;<--don't aim at targets that are in stasis (Stasis effect) iftrue L131 getlocal 4 callproperty QName(PackageNamespace(""), "_-c8"), 0 ;<--don't aim at shielded targets (Invulnerable effect) iftrue L131 ;calculate distance enemy is from player getlex QName(PackageNamespace(""), "Math") getlocal 4 getproperty QName(PackageNamespace(""), "y_") getlex QName(PackageNamespace(""), "y_") subtract dup multiply getlocal 4 getproperty QName(PackageNamespace(""), "x_") getlex QName(PackageNamespace(""), "x_") subtract dup multiply add callproperty QName(PackageNamespace(""), "sqrt"), 1 dup setlocal 9 ;store considered target distance ;load up equiped weapon info ??? getlex QName(PackageNamespace("com.company.assembleegameclient.objects"), "ObjectLibrary") getproperty QName(PackageNamespace(""), "_-020") getlex QName(PackageNamespace(""), "_-zq") pushbyte 0 getproperty MultinameL("com.company.assembleegameclient.objects:Projectile#0"), PrivateNamespace("*", "com.company.assembleegameclient.objects:Projectile#1"), PackageNamespace(""), PackageNamespace("com.company.assembleegameclient.objects"), PackageInternalNs("com.company.assembleegameclient.objects"), Namespace("http://adobe.com/AS3/2006/builtin"), ProtectedNamespace("_-09j"), StaticProtectedNs("_-09j"), StaticProtectedNs("_-0-I")) convert_i getproperty MultinameL("com.company.assembleegameclient.objects:Projectile#0"), PrivateNamespace("*", "com.company.assembleegameclient.objects:Projectile#1"), PackageNamespace(""), PackageNamespace("com.company.assembleegameclient.objects"), PackageInternalNs("com.company.assembleegameclient.objects"), Namespace("http://adobe.com/AS3/2006/builtin"), ProtectedNamespace("_-09j"), StaticProtectedNs("_-09j"), StaticProtectedNs("_-0-I")) getproperty QName(PackageNamespace(""), "_-Ie") pushbyte 0 getproperty MultinameL("com.company.assembleegameclient.objects:Projectile#0"), PrivateNamespace("*", "com.company.assembleegameclient.objects:Projectile#1"), PackageNamespace(""), PackageNamespace("com.company.assembleegameclient.objects"), PackageInternalNs("com.company.assembleegameclient.objects"), Namespace("http://adobe.com/AS3/2006/builtin"), ProtectedNamespace("_-09j"), StaticProtectedNs("_-09j"), StaticProtectedNs("_-0-I")) dup setlocal 11 ;store weapon data in registry ;calculate if considered target is in range using weapon projectile speed and lifetime getproperty QName(PackageNamespace(""), "speed_") pushshort 10000 divide getlocal 11 getproperty QName(PackageNamespace(""), "lifetime_") multiply ifgt L131 ;jump to next considered object (current considered object out of range) ;get considered target max health getlocal 4 getproperty QName(PackageNamespace(""), "_-LT") dup setlocal 13 ;store max health ;if considered target max health is the same as current target max health, check distance getlocal 12 ifeq L109 ;if considered target max health is less than current target max health, move on to next object. getlocal 13 getlocal 12 iflt L131 jump L1099 ;considered target max health is greather than current target's, set new target L109: ;if considered target distance is less than current target distance, set new target getlocal 9 ;considered target getlocal 8 ;current target iflt L1099 jump L131 ;current target is closer than considered target, check next object L1099: ;considered target max health is more than current, set at new target. getlocal 13 setlocal 12 getlocal 9 setlocal 8 ;calculate shooting angle getlex QName(PackageNamespace(""), "Math") getlocal 4 getproperty QName(PackageNamespace(""), "y_") getlex QName(PackageNamespace(""), "y_") subtract getlocal 4 getproperty QName(PackageNamespace(""), "x_") getlex QName(PackageNamespace(""), "x_") subtract callproperty QName(PackageNamespace(""), "atan2"), 2 setlocal 7 ;store new angle jump L131 ;look at next object L131: hasnext2 6, 5 iftrue L40 kill 6 kill 5 getlocal 12 pushbyte 0 ifeq L141 L138: getlocal0 getlocal 7 callpropvoid QName(PrivateNamespace("*", "com.company.assembleegameclient.objects:Player#0"), "shoot"), 1 L141: returnvoid end ; code end ; body end ; method end ; trait *Save the file. *Reassemble game code with RABCDAsm Your client now has autoaim.